//
// Created by admin on 2022/9/21.
//

#ifndef LEARN_OPENCV_HEADER_ALL_H
#define LEARN_OPENCV_HEADER_ALL_H

// C
#ifndef _GLIBCXX_NO_ASSERT

#include <cassert>              //用条件判断，同等java:assert

#endif

#include <cctype>               //字符操作函数（大小写，判断字符的计算机类型）
#include <cerrno>               //错误码，可以获取执行系统调用时，系统保留立即状态码
#include <cfloat>               //标准float类型
#include <ciso646>              //扩充11可能不支持ISO646符号宏
#include <climits>              //基础数据类型边界值宏
#include <clocale>              //时区
#include <cmath>                //基本数学运算
#include <csetjmp>              //一般用不到，环境保留跳转
#include <csignal>              //信号函数，一般用于程序异常中断处理
#include <cstdarg>              //可变参数处理
#include <cstddef>              //一些基础定义，已全部移植到C++config中
#include <cstdio>               //继承C使用全平台的标准io流，一般用于文件处理
#include <cstdlib>              //继承C标准库常用函数，包括类型转换，数字处理，内存分配
#include <cstring>              //标准string库
#include <ctime>                //一些常用的时间转换函数

#if __cplusplus >= 201103L//C++11后新增

#include <ccomplex>             //复数处理函数
#include <cfenv>                //浮点数处理（不知道常不常用）
#include <cinttypes>            //各位宽整数类型包装
#include <cstdalign>            //基准位宽长度一般是1
#include <cstdbool>             //参考bool
#include <cstdint>              //参考inttypes
#include <ctgmath>              //包含cmath complex处理的函数
#include <cuchar>               //扩展char的无符号char
#include <cwchar>               //扩展char的双字节char（用于他国文字）
#include <cwctype>              //同ctype继续扩展一些双字节特殊符号

#endif

// C++
#include <algorithm>            //一些争对容器处理的算法函数
#include <bitset>               //把抽象类型转换成bit位操作
#include <complex>              //同ccomplex
#include <deque>                //双端队列利用类似map+vec实现
#include <exception>            //异常类型以及基本异常处理函数
#include <fstream>              //标准文件流处理函数
#include <functional>           //标准函数类型包装处理工具
#include <iomanip>              //估计是专门处理io流函数
#include <ios>                  //流式顶级父类包
#include <iosfwd>               //对字符流的扩展
#include <iostream>             //标准输入输出流
#include <istream>              //输入流
#include <iterator>             //迭代器
#include <limits>               //常用边界常量
#include <list>                 //双向链表
#include <locale>               //时区
#include <map>                  //有序hash表
#include <memory>               //包装动态内存处理包括，指针类型包装，分配器等
#include <new>                  //new关键字，以及异常处理
#include <numeric>              //集合的一些小处理工具（感觉没啥用，不如手写）
#include <ostream>              //输出流
#include <queue>                //FIFO单向队列
#include <set>                  //有序Set
#include <sstream>              //字符串流
#include <stack>                //FILO栈
#include <stdexcept>            //标准异常处理
#include <streambuf>            //字节流处理
#include <string>               //字符串包装类
#include <typeinfo>             //类型获取处理
#include <utility>              //不同类型处理集（pair, move，forward等）
#include <valarray>             //数组处理工具
#include <vector>               //标准集合对array可变扩展

#if __cplusplus >= 201103L//C++11后新增

#include <array>                //固定数组
#include <atomic>               //乐观锁实现的原子类
#include <chrono>               //日历工具
#include <codecvt>              //UTF类型转换工具
#include <condition_variable>   //用于线程条件转移工具
#include <forward_list>         //单链表
#include <future>               //用于保存异步任务回调函数
#include <initializer_list>     //常用于快速包装数组初始化类
#include <mutex>                //锁
#include <random>               //随机数
#include <ratio>                //好像是对大数运算的扩展工具
#include <regex>                //正则匹配工具
#include <scoped_allocator>     //暂时没有涉及
#include <system_error>         //专门处理系统异常
#include <thread>               //线程
#include <tuple>                //tuple
#include <typeindex>            //对类型的包装（可以把类型转化成参数）
#include <type_traits>          //类型萃取（C++模板灵魂）
#include <unordered_map>        //无序hash表(标准hashMap)
#include <unordered_set>        //无序hashSet(标准hashMap)

#endif

#if __cplusplus >= 201402L//C++14后新增

#include <shared_mutex>         //共享锁

#endif

#if __cplusplus >= 201703L//暂未涉足
#include <charconv>
#include <filesystem>

#endif


#endif //LEARN_OPENCV_HEADER_ALL_H
